﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using COFE.Core;
using COFE.Core.Profile;

namespace COFE.Core.Lister
{
    /// <summary>
    /// Return Stream object for a file in an FileSystem defined by IDirectoryLister.
    /// </summary>
    public interface IStreamProvider
    {
        /// <summary>
        /// Set by the parent manager.
        /// </summary>
        string ListerKey { get;}

        /// <summary>
        ///  Open a FileStream for the specified entries.
        /// </summary>
        /// <param name="file"></param>
        /// <param name="mode"></param>
        /// <param name="access"></param>
        /// <param name="share"></param>
        /// <returns></returns>
        Stream OpenStream(IInternalFileInfoExA file, FileMode mode, FileAccess access, FileShare share);        
    }
}
